1. Field of the Invention
The present invention relates to the field of integrated circuits and high-speed buses. More specifically, the present invention relates to a circuit for a high-speed driver and techniques for obtaining rapid switching speed with low power consumption and low noise on high-speed buses.
2. Description of the Related Art
To obtain rapid switching speed on a bus with low power consumption and low noise, it is desirable for a current mode driver to set and control the current at which the driver operates. U.S. Pat. No. 5,254,883, assigned to the assignee of the present invention, and incorporated herein by reference, discusses an apparatus and method for setting and maintaining the operating current of a current mode driver for a bus. Essentially, for a bus with a master-slave architecture, there are two problems to be solved in setting the operating current on the bus. First, the operating current of the master's current mode drivers should be properly set. Second, the operating current of the slave's current mode drivers should be properly set. Once these currents are set, they are maintained at those settings despite process, voltage and temperature variations by circuitry in the master and slave devices.
A master-slave bus architecture is discussed in the '883 patent in which a master may send data to and receive data from a slave. A slave may send data to and receive data from a master, but not another slave. The master sets its operating current for its drivers and each slave sets the operating current for its drivers.
The master employs an adjustable current sink as a driver for each bus line that it drives. The current sink turns on to drive the voltage on the bus line, V.sub.out, to a voltage closer to ground and turns off to allow a termination resistor, R.sub.term, on the bus line to pull the bus line closer to the terminator voltage, V.sub.term. The current in the driver, I.sub.d, is set by a digital counter whose count is determined from a feedback circuit having a comparator. If the count is all zeros then no current flows in the driver and the voltage on the bus line, V.sub.out, is the termination voltage, V.sub.term. If the count is all ones, then the maximum current flows in the driver and the voltage on the bus line, V.sub.out, equals V.sub.term -I.sub.d *R.sub.term.
The feedback circuit compares a voltage reference, V.sub.ref, to a node voltage, V.sub.n, derived from a scaled reference driver which receives the count from the counter. Feedback assures that the node voltage matches the reference voltage, V.sub.n =V.sub.ref. When the match occurs the reference driver has an output swing (i.e., change in voltage) of (V.sub.term -V.sub.ref) and the actual output driver has a swing of 2*(V.sub.term -V.sub.ref) due to the scaling between the reference driver and the actual output driver. Therefore, V.sub.out equals (V.sub.term -2)*(V.sub.term -V.sub.ref). Thus, by selecting a value for V.sub.term and V.sub.ref any size symmetric voltage swing about V.sub.ref may be achieved.
The slave in the '883 patent also employs an adjustable current sink as a driver for each bus line that it drives. A counter similarly controls the value of the current in the driver such that the driver may swing between V.sub.term and V.sub.term -I.sub.d *R.sub.term, where I.sub.d is the current setting in the driver of the slave. However, the value in the counter is directly proportional to the value of an RC time constant whose capacitance, C, is set by the master. The master also determines whether the value of V.sub.out from the driver matches V.sub.ref in the master. It adjusts the RC time constant so that the count in the counter will set a current in the driver and V.sub.out will match V.sub.ref. Thus V.sub.out will equal V.sub.term -(V.sub.term -V.sub.ref). In order to produce a symmetric swing about V.sub.ref another step is required. The master should double the value of the RC time constant which will double the count. This will produce a V.sub.out which is equal to V.sub.term -2*(V.sub.term -V.sub.ref).
Maintenance of the current setting of the driver in the slave may be performed in a manner different from that in the master. In the slave, the effective R in the RC time constant is derived from a reference voltage and reference current. If due to variations in temperature or supply voltage, the reference current decreases then the effective R in the RC time constant increases. This increases the count and the operational current setting of the driver in the slave, thus compensating for the effect. If the reference current increases, the effective R and the count decrease, again compensating for the change.
While the above techniques of setting and maintaining operating current in the master and slave bus line drives have met with substantial success, the techniques are not without certain shortcomings. For example, the technique of setting the current in the master requires an extra pin dedicated to receive the external resistor. Another shortcoming is selecting the proper value of the external resistor to maintain the factor of two scaling between (V.sub.term -V.sub.n) and (V.sub.term -V.sub.out). If the scaling is not precisely set, the output swing is not symmetric about V.sub.ref. Further, as process, voltage, or temperature variations occur, the value selected for the resistor may not be ideal. A further shortcoming is that an electrostatic discharge structure (ESD) in series with the pin receiving the external resistor adds a variable amount of resistance in series with the external resistor. This makes the selection of the external resistance subject to variations in the ESD structure.
Further, a shortcoming in the technique of setting the current in the slave is that a relatively complex algorithm between the slave and the master is required to correctly set the current in the slave. The master sets the RC time constant which in turn determines the count and the output value. The master then tests the output value to determine whether it matches V.sub.ref. If not, it increases the count and retests the output value. This cycle continues until a match occurs. However, a match of V.sub.out to V.sub.ref for one bus line, does not always insure that a match will occur on another bus line due to small differences in characteristics between output drivers, bus lines, and V.sub.ref comparison circuits.
As can be seen, an improved output driver circuit and techniques for obtaining rapid switching speed with low power consumption and low noise is needed.